;------------------------------------------------------------------------------
;
; Copy and extended value from one variable to another
;
; ExtendEq SrcLoc,DestLoc - Copies 10 bytes from srcloc to DestLoc
;
;------------------------------------------------------------------------------
                    MACRO
&Lab                ExtendEq &SrcLoc,&DestLoc
&Lab                lda &SrcLoc
                    sta &DestLoc
                    lda &SrcLoc+2
                    sta &DestLoc+2
                    lda &SrcLoc+4
                    sta &DestLoc+4
                    lda &SrcLoc+6
                    sta &DestLoc+6
                    lda &SrcLoc+8
                    sta &DestLoc+8
                    MEND
                    
;-----------------------------------------------------------------------------
;
; Push a long space on the stack for fuction results
;
; LongResult
;
;-----------------------------------------------------------------------------
                    MACRO
&Lab                LongResult
&Lab                pha
                    pha
                    MEnd
                    
;-----------------------------------------------------------------------------
;
; Store 0's into an Extended number
;
; STZEXT Dest - Stores 10 bytes of 0 into Dest
;
;------------------------------------------------------------------------------
                    MACRO
&Lab                STZEXT &Dest
&Lab                stz &Dest
                    stz &Dest+2
                    stz &Dest+4
                    stz &Dest+6
                    stz &Dest+8
                    MEND
                    
;------------------------------------------------------------------------------
;
; Store 0's into a longword
;
; STZL Dest - stores 4 bytes of 0 into Dest
;
;------------------------------------------------------------------------------
                    MACRO
&Lab                STZL &Dest
&Lab                stz &Dest
                    stz &Dest+2
                    MEND

 MACRO
&lab _DialogStartUp
&lab ldx #$0215
 jsl $E10000
 MEND
 MACRO
&lab _DialogShutDown
&lab ldx #$0315
 jsl $E10000
 MEND
 MACRO
&lab _NoteAlert
&lab ldx #$1915
 jsl $E10000
 MEND
 MACRO
&lab _EMStartUp
&lab ldx #$0206
 jsl $E10000
 MEND
 MACRO
&lab _EMShutDown
&lab ldx #$0306
 jsl $E10000
 MEND
 MACRO
&lab _IMStartUp
&lab ldx #$020B
 jsl $E10000
 MEND
 MACRO
&lab _FixDiv
&lab ldx #$110B
 jsl $E10000
 MEND
 MACRO
&lab _FixMul
&lab ldx #$0F0B
 jsl $E10000
 MEND
 MACRO
&lab _Frac2Fix
&lab ldx #$1D0B
 jsl $E10000
 MEND
 MACRO
&lab _FracCos
&lab ldx #$150B
 jsl $E10000
 MEND
 MACRO
&lab _FracSin
&lab ldx #$160B
 jsl $E10000
 MEND
 MACRO
&lab _Int2Hex
&lab ldx #$220B
 jsl $E10000
 MEND
 MACRO
&lab _LEStartUp
&lab ldx #$0214
 jsl $E10000
 MEND
 MACRO
&lab _LEShutDown
&lab ldx #$0314
 jsl $E10000
 MEND
 MACRO
&lab _TLStartUp
&lab ldx #$0201
 jsl $E10000
 MEND
 MACRO
&lab _TLShutDown
&lab ldx #$0301
 jsl $E10000
 MEND
 MACRO
&lab _LoadTools
&lab ldx #$0E01
 jsl $E10000
 MEND
 MACRO
&lab _MMStartUp
&lab ldx #$0202
 jsl $E10000
 MEND
 MACRO
&lab _MMShutDown
&lab ldx #$0302
 jsl $E10000
 MEND
 MACRO
&lab _DisposeHandle
&lab ldx #$1002
 jsl $E10000
 MEND
 MACRO
&lab _NewHandle
&lab ldx #$0902
 jsl $E10000
 MEND
 MACRO
&lab _MTStartUp
&lab ldx #$0203
 jsl $E10000
 MEND
 MACRO
&lab _MTShutDown
&lab ldx #$0303
 jsl $E10000
 MEND
 MACRO
&lab _ScrapStartUp
&lab ldx #$0216
 jsl $E10000
 MEND
 MACRO
&lab _ScrapShutDown
&lab ldx #$0316
 jsl $E10000
 MEND
 MACRO
&lab _ReadChar
&lab ldx #$220C
 jsl $E10000
 MEND
 MACRO
&lab _WriteCString
&lab ldx #$200C
 jsl $E10000
 MEND
 MACRO
&lab _CtlStartUp
&lab ldx #$0210
 jsl $E10000
 MEND
 MACRO
&lab _CtlShutDown
&lab ldx #$0310
 jsl $E10000
 MEND
 MACRO
&lab _DeskStartUp
&lab ldx #$0205
 jsl $E10000
 MEND
 MACRO
&lab _DeskShutDown
&lab ldx #$0305
 jsl $E10000
 MEND
 MACRO
&lab _FixAppleMenu
&lab ldx #$1E05
 jsl $E10000
 MEND
 MACRO
&lab _ListStartup
&lab ldx #$021C
 jsl $E10000
 MEND
 MACRO
&lab _ListShutDown
&lab ldx #$031C
 jsl $E10000
 MEND
 MACRO
&lab _MenuStartUp
&lab ldx #$020F
 jsl $E10000
 MEND
 MACRO
&lab _MenuShutDown
&lab ldx #$030F
 jsl $E10000
 MEND
 MACRO
&lab _DrawMenuBar
&lab ldx #$2A0F
 jsl $E10000
 MEND
 MACRO
&lab _FixMenuBar
&lab ldx #$130F
 jsl $E10000
 MEND
 MACRO
&lab _HiliteMenu
&lab ldx #$2C0F
 jsl $E10000
 MEND
 MACRO
&lab _InsertMenu
&lab ldx #$0D0F
 jsl $E10000
 MEND
 MACRO
&lab _NewMenu
&lab ldx #$2D0F
 jsl $E10000
 MEND
 MACRO
&lab _QDStartUp
&lab ldx #$0204
 jsl $E10000
 MEND
 MACRO
&lab _QDShutDown
&lab ldx #$0304
 jsl $E10000
 MEND
 MACRO
&lab _DrawString
&lab ldx #$A504
 jsl $E10000
 MEND
 MACRO
&lab _EraseRect
&lab ldx #$5504
 jsl $E10000
 MEND
 MACRO
&lab _GrafOff
&lab ldx #$0B04
 jsl $E10000
 MEND
 MACRO
&lab _LineTo
&lab ldx #$3C04
 jsl $E10000
 MEND
 MACRO
&lab _MoveTo
&lab ldx #$3A04
 jsl $E10000
 MEND
 MACRO
&lab _SetPort
&lab ldx #$1B04
 jsl $E10000
 MEND
 MACRO
&lab _ShowCursor
&lab ldx #$9104
 jsl $E10000
 MEND
 MACRO
&lab _WindStartUp
&lab ldx #$020E
 jsl $E10000
 MEND
 MACRO
&lab _WindShutDown
&lab ldx #$030E
 jsl $E10000
 MEND
 MACRO
&lab _CloseWindow
&lab ldx #$0B0E
 jsl $E10000
 MEND
 MACRO
&lab _NewWindow
&lab ldx #$090E
 jsl $E10000
 MEND
 MACRO
&lab _RefreshDesktop
&lab ldx #$390E
 jsl $E10000
 MEND
 MACRO
&lab _TaskMaster
&lab ldx #$1D0E
 jsl $E10000
 MEND
 MACRO
&lab _SANEStartup
&lab ldx #$020A
 jsl $E10000
 MEND
 MACRO
&lab _SANEShutDown
&lab ldx #$030A
 jsl $E10000
 MEND
 MACRO
&lab FADDX
&lab FOPRF FFEXT+FOADD
 MEND
 MACRO
&lab FADDI
&lab FOPRF FFINT+FOADD
 MEND
 MACRO
&lab FMULX
&lab FOPRF FFEXT+FOMUL
 MEND
 MACRO
&lab FMULI
&lab FOPRF FFINT+FOMUL
 MEND
 MACRO
&lab FDIVX
&lab FOPRF FFEXT+FODIV
 MEND
 MACRO
&lab FDIVI
&lab FOPRF FFINT+FODIV
 MEND
 MACRO
&lab FABSX
&lab FOPRF FOABS
 MEND
 MACRO
&lab FX2X
&lab FOPRF FFEXT+FOZ2X
 MEND
 MACRO
&lab FI2X
&lab FOPRF FFINT+FOZ2X
 MEND
 MACRO
&lab FX2I
&lab FOPRF FFINT+FOX2Z
 MEND
 MACRO
&lab FCMPX
&lab FOPRF FFEXT+FOCMP
 MEND
 MACRO
&lab FBLE &N1
&lab BMI &N1
 BEQ &N1
 MEND
 MACRO
&lab FSINX
&lab FOPRE FOSINX
 MEND
 MACRO
&lab FCOSX
&lab FOPRE FOCOSX
 MEND
 MACRO
&lab FOPRF &N1
&lab PEA &N1
 LDX #SANEtsNum+256*FPNum
 JSL $E10000
 MEND
 MACRO
&lab FOPRE &N1
&lab PEA &N1
 LDX #SANEtsNum+256*ElemNum
 JSL $E10000
 MEND
 MACRO
&lab _QUIT &params
&lab jsl $E100A8
 dc i2"$29"
 dc i4"&params"
 MEND
 MACRO
&lab pulllong &addr1,&addr2
&lab ANOP
 AIF C:&addr1=0,.a
 AIF C:&addr2=0,.b
 LCLC &C
&C AMID &addr1,1,1
 AIF "&C"="[",.zeropage
 pullword &addr1
 sta &addr2
 pullword &addr1+2
 sta &addr2+2
 MEXIT
.a
 pullword
 pullword
 MEXIT
.b
 pullword &addr1
 pullword &addr1+2
 MEXIT
.zeropage
 ldy #&addr2
 pullword &addr1,y
 ldy #&addr2+2
 pullword &addr1,y
 MEND
 MACRO
&lab pullword &SYSOPR
&lab ANOP
 pla
 AIF C:&SYSOPR=0,.end
 sta &SYSOPR
.end
 MEND
 MACRO
&lab pushlong &addr,&offset
&lab ANOP
 LCLC &C
 LCLC &REST
&C AMID &addr,1,1
 AIF "&C"="#",.immediate
 AIF "&C"="[",.zeropage
 AIF C:&offset=0,.nooffset
 AIF "&offset"="s",.stack
 pushword &addr+2,&offset
 pushword &addr,&offset
 MEXIT
.nooffset
 pushword &addr+2
 pushword &addr
 MEXIT
.immediate
&REST AMID &addr,2,L:&addr-1
 dc I1'$F4',I2'(&REST)|-16'
 dc I1'$F4',I2'&REST'
 MEXIT
.stack
 pushword &addr+2,s
 pushword &addr+2,s
 MEXIT
.zeropage
 ldy #&offset+2
 pushword &addr,y
 ldy #&offset
 pushword &addr,y
 MEND
 MACRO
&lab pushword &SYSOPR
&lab ANOP
 AIF C:&SYSOPR=0,.b
 LCLC &C
&C AMID "&SYSOPR",1,1
 AIF ("&C"="#").AND.(S:LONGA),.immediate
 lda &SYSOPR
 pha
 MEXIT
.b
 pha
 MEXIT
.immediate
 LCLC &REST
 LCLA &BL
&BL ASEARCH "&SYSOPR"," ",1
 AIF &BL>0,.a
&BL SETA L:&SYSOPR+1
.a
&REST AMID "&SYSOPR",2,&BL-2
 dc I1'$F4',I2'&REST'
 MEND
 MACRO
&lab str &string
&lab dc i1'L:&string',C'&string'
 MEND
